home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung 2 / Power-Programmierung CD 2 (Tewi)(1994).iso / gnu / djgpp / contrib / dvx / inc / x11 / extensio / xiproto.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-15  |  32.9 KB  |  1,237 lines

  1. /* $XConsortium: XIproto.h,v 1.4 89/12/12 16:36:16 jim Exp $ */
  2.  
  3. /************************************************************
  4. Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, California, and the 
  5. Massachusetts Institute of Technology, Cambridge, Massachusetts.
  6.  
  7.             All Rights Reserved
  8.  
  9. Permission to use, copy, modify, and distribute this software and its
  10. documentation for any purpose and without fee is hereby granted,
  11. provided that the above copyright notice appear in all copies and that
  12. both that copyright notice and this permission notice appear in
  13. supporting documentation, and that the names of Hewlett-Packard or MIT not be
  14. used in advertising or publicity pertaining to distribution of the
  15. software without specific, written prior permission.
  16.  
  17. HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  18. ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  19. HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  20. ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  21. WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  22. ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  23. SOFTWARE.
  24.  
  25. ********************************************************/
  26.  
  27. #ifndef _XIPROTO_H
  28. #define _XIPROTO_H
  29.  
  30. #define  NEED_EVENTS
  31. #define  NEED_REPLIES
  32. #include <X11/Xproto.h> /* Was "Xproto.h" POHC 90/12/17 */
  33. #include <X11/X.h> /* Was "X.h". POHC 90/12/17 */ 
  34.  
  35. /*********************************************************
  36.  *
  37.  * number of events, errors, and extension name.
  38.  *
  39.  */
  40.  
  41. #define MORE_EVENTS    0x80
  42. #define DEVICE_BITS    0x7F
  43.  
  44. #define numInputClasses 7
  45.  
  46. #define MAXNAMELEN    12
  47. #define FollowKeyboardWin  ((WindowPtr) FollowKeyboard)
  48.  
  49. #define IEVENTS        15
  50. #define IERRORS        4
  51.  
  52. #define CLIENT_REQ        1
  53.  
  54. typedef struct  _XExtEventInfo
  55.     {
  56.     Mask    mask;
  57.     BYTE     type;
  58.     BYTE    word;
  59.     } XExtEventInfo;
  60.  
  61. struct tmask
  62.     {
  63.     Mask    mask;
  64.     BOOL    select;
  65.     };
  66.  
  67. /*********************************************************
  68.  *
  69.  * Event constants used by library.
  70.  *
  71.  */
  72.  
  73. #define XI_DeviceValuator        0
  74. #define XI_DeviceKeyPress        1
  75. #define XI_DeviceKeyRelease        2
  76. #define XI_DeviceButtonPress        3
  77. #define XI_DeviceButtonRelease        4
  78. #define XI_DeviceMotionNotify        5
  79. #define XI_DeviceFocusIn        6
  80. #define XI_DeviceFocusOut        7
  81. #define XI_ProximityIn            8
  82. #define XI_ProximityOut            9
  83. #define XI_DeviceStateNotify        10
  84. #define XI_DeviceMappingNotify        11
  85. #define XI_ChangeDeviceNotify        12
  86. #define XI_DeviceKeystateNotify        13
  87. #define XI_DeviceButtonstateNotify    14
  88.  
  89. /*********************************************************
  90.  *
  91.  * Protocol request constants
  92.  *
  93.  */
  94.  
  95. #define X_GetExtensionVersion        1
  96. #define X_ListInputDevices        2
  97. #define X_OpenDevice            3
  98. #define X_CloseDevice            4
  99. #define X_SetDeviceMode            5
  100. #define X_SelectExtensionEvent      6
  101. #define X_GetSelectedExtensionEvents    7
  102. #define X_ChangeDeviceDontPropagateList 8
  103. #define X_GetDeviceDontPropagateList     9
  104. #define X_GetDeviceMotionEvents     10
  105. #define X_ChangeKeyboardDevice        11
  106. #define X_ChangePointerDevice        12
  107. #define X_GrabDevice             13
  108. #define X_UngrabDevice          14
  109. #define X_GrabDeviceKey            15
  110. #define X_UngrabDeviceKey        16
  111. #define X_GrabDeviceButton        17
  112. #define X_UngrabDeviceButton        18
  113. #define X_AllowDeviceEvents        19
  114. #define X_GetDeviceFocus        20
  115. #define X_SetDeviceFocus        21
  116. #define X_GetFeedbackControl        22
  117. #define X_ChangeFeedbackControl        23
  118. #define X_GetDeviceKeyMapping        24
  119. #define X_ChangeDeviceKeyMapping    25
  120. #define X_GetDeviceModifierMapping    26
  121. #define X_SetDeviceModifierMapping    27
  122. #define X_GetDeviceButtonMapping    28
  123. #define X_SetDeviceButtonMapping    29
  124. #define X_QueryDeviceState         30
  125. #define X_SendExtensionEvent         31
  126.  
  127. /*********************************************************
  128.  *
  129.  * Protocol request and reply structures.
  130.  *
  131.  * GetExtensionVersion.
  132.  *
  133.  */
  134.  
  135. typedef struct _xGetExtensionVersionReq { /* POHC 92/02/14 */
  136.     CARD8     reqType;       /* input extension major code   */
  137.     CARD8     ReqType;       /* always X_GetExtensionVersion */
  138.     CARD16     length;
  139.     CARD16     nbytes;
  140.     CARD8     pad1, pad2;
  141. } xGetExtensionVersionReq;
  142.  
  143. typedef struct _xGetExtensionVersionReply { /* POHC 92/02/14 */
  144.     CARD8     repType;      /* X_Reply             */
  145.     CARD8     RepType;           /* always X_GetExtensionVersion */
  146.     CARD16     sequenceNumber B16;
  147.     CARD32     length B32;
  148.     CARD16     major_version;
  149.     CARD16     minor_version;
  150.     BOOL     present;
  151.     CARD8     pad1, pad2, pad3;
  152.     CARD32     pad01 B32;
  153.     CARD32     pad02 B32;
  154.     CARD32     pad03 B32;
  155.     CARD32     pad04 B32;
  156. } xGetExtensionVersionReply;
  157.  
  158. /*********************************************************
  159.  *
  160.  * ListInputDevices.
  161.  *
  162.  */
  163.  
  164. typedef struct _xListInputDevicesReq { /* POHC 92/02/14 */
  165.     CARD8     reqType;    /* input extension major code    */
  166.     CARD8     ReqType;    /* always X_ListInputDevices     */
  167.     CARD16     length;
  168. } xListInputDevicesReq;
  169.  
  170. typedef struct _xListInputDevicesReply { /* POHC 92/02/14 */
  171.     CARD8     repType;      /* X_Reply             */
  172.     CARD8     RepType;        /* always X_ListInputDevices      */
  173.     CARD16     sequenceNumber B16;
  174.     CARD32     length B32;
  175.     CARD8     ndevices;
  176.     CARD8     pad1, pad2, pad3;
  177.     CARD32     pad01 B32;
  178.     CARD32     pad02 B32;
  179.     CARD32     pad03 B32;
  180.     CARD32     pad04 B32;
  181.     CARD32     pad05 B32;
  182. } xListInputDevicesReply;
  183.  
  184. typedef struct _xDeviceInfo *xDeviceInfoPtr;
  185.  
  186. typedef struct _xAnyClassinfo *xAnyClassPtr;
  187.  
  188. typedef struct _xAnyClassinfo {
  189.     CARD8     class;
  190.     CARD8     length;
  191.     } xAnyClassInfo;
  192.  
  193. typedef struct _xDeviceInfo {
  194.     CARD32    type;
  195.     CARD8    id;
  196.     CARD8     num_classes;
  197.     CARD8     use;
  198.     CARD8     pad1;
  199.     } xDeviceInfo;
  200.  
  201. typedef struct _xKeyInfo *xKeyInfoPtr;
  202.  
  203. typedef struct _xKeyInfo {
  204.     CARD8     class;
  205.     CARD8     length;
  206.     KeyCode     min_keycode; 
  207.     KeyCode     max_keycode; 
  208.     CARD16     num_keys;
  209.     } xKeyInfo;
  210.  
  211. typedef struct _xButtonInfo *xButtonInfoPtr;
  212.  
  213. typedef struct _xButtonInfo {
  214.     CARD8     class;
  215.     CARD8     length;
  216.     CARD16     num_buttons;
  217.     } xButtonInfo;
  218.  
  219. typedef struct _xValuatorInfo *xValuatorInfoPtr;
  220.  
  221. typedef struct _xValuatorInfo {
  222.     CARD8     class;
  223.     CARD8     length;
  224.     CARD8     num_axes;
  225.     CARD8     mode;
  226.     CARD32     motion_buffer_size;
  227.     } xValuatorInfo;
  228.  
  229. typedef struct _xAxisInfo *xAxisInfoPtr;
  230.  
  231. typedef struct _xAxisInfo {
  232.     CARD32     resolution;
  233.     CARD32     min_value;
  234.     CARD32     max_value;
  235.     } xAxisInfo;
  236.  
  237. /*********************************************************
  238.  *
  239.  * OpenDevice.
  240.  *
  241.  */
  242.  
  243. typedef struct _xOpenDeviceReq { /* POHC 92/02/14 */
  244.     CARD8    reqType;    /* input extension major code    */
  245.     CARD8     ReqType;        /* always X_OpenDevice         */
  246.     CARD16     length B16;
  247.     CARD8       deviceid;
  248.     BYTE    pad1, pad2, pad3;
  249. } xOpenDeviceReq;
  250.  
  251. typedef struct _xOpenDeviceReply { /* POHC 92/02/14 */
  252.     CARD8     repType;      /* X_Reply             */
  253.     CARD8     RepType;           /* always X_OpenDevice            */
  254.     CARD16     sequenceNumber B16;
  255.     CARD32     length B32;
  256.     CARD8     num_classes;
  257.     BYTE     pad1, pad2, pad3;
  258.     CARD32     pad00 B32;
  259.     CARD32     pad01 B32;
  260.     CARD32     pad02 B32;
  261.     CARD32     pad03 B32;
  262.     CARD32     pad04 B32;
  263.     } xOpenDeviceReply;
  264.  
  265. typedef struct _xInputClassInfo { /* POHC 92/02/14 */
  266.     CARD8     class;
  267.     CARD8     event_type_base;
  268.     } xInputClassInfo;
  269.  
  270. /*********************************************************
  271.  *
  272.  * CloseDevice.
  273.  *
  274.  */
  275.  
  276. typedef struct _xCloseDeviceReq { /* POHC 92/02/14 */
  277.     CARD8    reqType;    /* input extension major code    */
  278.     CARD8     ReqType;        /* always X_CloseDevice     */
  279.     CARD16     length B16;
  280.     CARD8       deviceid;
  281.     BYTE    pad1, pad2, pad3;
  282. } xCloseDeviceReq;
  283.  
  284. /*********************************************************
  285.  *
  286.  * SetDeviceMode.
  287.  *
  288.  */
  289.  
  290. typedef struct _xSetDeviceModeReq { /* POHC 92/02/14 */
  291.     CARD8     reqType;    /* input extension major code    */
  292.     CARD8     ReqType;         /* always X_SetDeviceMode     */
  293.     CARD16     length;
  294.     CARD8       deviceid;
  295.     CARD8       mode;
  296.     BYTE     pad1, pad2;
  297. } xSetDeviceModeReq;
  298.  
  299. typedef struct _xSetDeviceModeReply { /* POHC 92/02/14 */
  300.     CARD8     repType;      /* X_Reply             */
  301.     CARD8     RepType;         /* always X_SetDeviceMode      */
  302.     CARD16     sequenceNumber B16;
  303.     CARD32     length B32;
  304.     CARD8     status;
  305.     BYTE    pad1, pad2, pad3;
  306.     CARD32     pad01 B32;
  307.     CARD32     pad02 B32;
  308.     CARD32     pad03 B32;
  309.     CARD32     pad04 B32;
  310.     CARD32     pad05 B32;
  311. } xSetDeviceModeReply;
  312.  
  313. /*********************************************************
  314.  *
  315.  * SelectExtensionEvent.
  316.  *
  317.  */
  318.  
  319. typedef struct _xSelectExtensionEventReq { /* POHC 92/02/14 */
  320.     CARD8    reqType;    /* input extension major code    */
  321.     CARD8     ReqType;        /* always X_SelectExtensionEvent */
  322.     CARD16     length B16;
  323.     Window     window B32;
  324.     CARD16    count B16;
  325.     CARD16    pad00;
  326. } xSelectExtensionEventReq;
  327.  
  328. /*********************************************************
  329.  *
  330.  * GetSelectedExtensionEvent.
  331.  *
  332.  */
  333.  
  334. typedef struct _xGetSelectedExtensionEventsReq { /* POHC 92/02/14 */
  335.     CARD8    reqType;    /* input extension major code    */
  336.     CARD8     ReqType;        /* X_GetSelectedExtensionEvents */
  337.     CARD16     length B16;
  338.     Window    window B32;
  339. } xGetSelectedExtensionEventsReq;
  340.  
  341. typedef struct _xGetSelectedExtensionEventsReply { /* POHC 92/02/14 */
  342.     CARD8     repType;      /* X_Reply             */
  343.     CARD8     RepType;           /* GetSelectedExtensionEvents    */
  344.     CARD16     sequenceNumber B16;
  345.     CARD32     length B32;
  346.     CARD16     this_client_count B16;
  347.     CARD16     all_clients_count B16;
  348.     CARD32     pad01 B32;
  349.     CARD32     pad02 B32;
  350.     CARD32     pad03 B32;
  351.     CARD32     pad04 B32;
  352.     CARD32     pad05 B32;
  353. } xGetSelectedExtensionEventsReply;
  354.  
  355. /*********************************************************
  356.  *
  357.  * ChangeDeviceDontPropagateList.
  358.  *
  359.  */
  360.  
  361. typedef struct _xChangeDeviceDontPropagateListReq { /* POHC 92/02/14 */
  362.     CARD8    reqType;    /* input extension major code    */
  363.     CARD8     ReqType;        /* X_ChangeDeviceDontPropagateList */
  364.     CARD16     length B16;
  365.     Window    window B32;
  366.     CARD16     count B16;
  367.     CARD8     mode;
  368.     BYTE    pad;
  369. } xChangeDeviceDontPropagateListReq;
  370.  
  371. /*********************************************************
  372.  *
  373.  * GetDeviceDontPropagateList.
  374.  *
  375.  */
  376.  
  377. typedef struct _xGetDeviceDontPropagateListReq { /* POHC 92/02/14 */
  378.     CARD8    reqType;    /* input extension major code    */
  379.     CARD8     ReqType;        /* X_GetDeviceDontPropagateList */
  380.     CARD16     length B16;
  381.     Window    window B32;
  382. } xGetDeviceDontPropagateListReq;
  383.  
  384. typedef struct _xGetDeviceDontPropagateListReply { /* POHC 92/02/14 */
  385.     CARD8     repType;      /* X_Reply             */
  386.     CARD8     RepType;        /* GetDeviceDontPropagateList   */
  387.     CARD16     sequenceNumber B16;
  388.     CARD32     length B32;
  389.     CARD16     count B16;
  390.     CARD16     pad00 B16;
  391.     CARD32     pad01 B32;
  392.     CARD32     pad02 B32;
  393.     CARD32     pad03 B32;
  394.     CARD32     pad04 B32;
  395.     CARD32     pad05 B32;
  396.     } xGetDeviceDontPropagateListReply;
  397.  
  398. /*********************************************************
  399.  *
  400.  * GetDeviceMotionEvents.
  401.  *
  402.  */
  403.  
  404. typedef struct _xGetDeviceMotionEventsReq { /* POHC 92/02/14 */
  405.     CARD8     reqType;    /* input extension major code    */
  406.     CARD8     ReqType;        /* always X_GetDeviceMotionEvents*/
  407.     CARD16     length B16;
  408.     Time     start B32;
  409.     Time    stop B32;
  410.     CARD8    deviceid;
  411.     BYTE    pad1, pad2, pad3;
  412. } xGetDeviceMotionEventsReq;
  413.  
  414. typedef struct _xGetDeviceMotionEventsReply { /* POHC 92/02/14 */
  415.     CARD8     repType;      /* X_Reply */
  416.     CARD8     RepType;        /* always X_GetDeviceMotionEvents  */
  417.     CARD16     sequenceNumber B16;
  418.     CARD32     length B32;
  419.     CARD32     nEvents B32;
  420.     CARD8      axes;
  421.     CARD8      mode;
  422.     BYTE    pad1, pad2;
  423.     CARD32     pad01 B32;
  424.     CARD32     pad02 B32;
  425.     CARD32     pad03 B32;
  426.     CARD32     pad04 B32;
  427. } xGetDeviceMotionEventsReply;
  428.  
  429. /*********************************************************
  430.  *
  431.  * ChangeKeyboardDevice.
  432.  *
  433.  */
  434.  
  435. typedef struct _xChangeKeyboardDeviceReq { /* POHC 92/02/14 */
  436.     CARD8    reqType;    /* input extension major code    */
  437.     CARD8     ReqType;        /* X_ChangeKeyboardDevice     */
  438.     CARD16     length B16;
  439.     CARD8     deviceid;
  440.     BYTE    pad1, pad2, pad3;
  441. } xChangeKeyboardDeviceReq;
  442.  
  443. typedef struct _xChangeKeyboardDeviceReply { /* POHC 92/02/14 */
  444.     CARD8     repType;      /* X_Reply             */
  445.     CARD8     RepType;        /* always X_ChangeKeyboardDevice*/
  446.     CARD16     sequenceNumber B16;
  447.     CARD32     length B32;  /* 0 */
  448.     CARD8     status;
  449.     BYTE    pad1, pad2, pad3;
  450.     CARD32     pad01 B32;
  451.     CARD32     pad02 B32;
  452.     CARD32     pad03 B32;
  453.     CARD32     pad04 B32;
  454.     CARD32     pad05 B32;
  455.     } xChangeKeyboardDeviceReply;
  456.  
  457. /*********************************************************
  458.  *
  459.  * ChangePointerDevice.
  460.  *
  461.  */
  462.  
  463. typedef struct _xChangePointerDeviceReq { /* POHC 92/02/14 */
  464.     CARD8    reqType;    /* input extension major code    */
  465.     CARD8     ReqType;        /* X_ChangePointerDevice     */
  466.     CARD16     length B16;
  467.     CARD8     xaxis;
  468.     CARD8     yaxis;
  469.     CARD8     deviceid;
  470.     BYTE    pad1;
  471. } xChangePointerDeviceReq;
  472.  
  473. typedef struct _xChangePointerDeviceReply { /* POHC 92/02/14 */
  474.     CARD8     repType;      /* X_Reply             */
  475.     CARD8     RepType;        /* always X_ChangePointerDevice */
  476.     CARD16     sequenceNumber B16;
  477.     CARD32     length B32;  /* 0 */
  478.     CARD8     status;
  479.     BYTE    pad1, pad2, pad3;
  480.     CARD32     pad01 B32;
  481.     CARD32     pad02 B32;
  482.     CARD32     pad03 B32;
  483.     CARD32     pad04 B32;
  484.     CARD32     pad05 B32;
  485.     } xChangePointerDeviceReply;
  486.  
  487. /*********************************************************
  488.  *
  489.  * GrabDevice.
  490.  *
  491.  */
  492.  
  493. typedef struct _xGrabDeviceReq { /* POHC 92/02/14 */
  494.     CARD8    reqType;    /* input extension major code    */
  495.     CARD8     ReqType;        /* always X_GrabDevice */
  496.     CARD16     length B16;
  497.     Window     grabWindow B32;
  498.     Time     time B32;
  499.     CARD16    event_count B16;
  500.     CARD8    this_device_mode;
  501.     CARD8    other_devices_mode;
  502.     BOOL     ownerEvents;
  503.     CARD8     deviceid;
  504.     CARD16     pad01 B16;
  505. } xGrabDeviceReq;
  506.  
  507. typedef struct _xGrabDeviceReply { /* POHC 92/02/14 */
  508.     CARD8     repType;      /* X_Reply             */
  509.     CARD8     RepType;        /* always X_GrabDevice      */
  510.     CARD16     sequenceNumber B16;
  511.     CARD32     length B32;  /* 0 */
  512.     CARD8     status;
  513.     BYTE    pad1, pad2, pad3;
  514.     CARD32     pad01 B32;
  515.     CARD32     pad02 B32;
  516.     CARD32     pad03 B32;
  517.     CARD32     pad04 B32;
  518.     CARD32     pad05 B32;
  519.     } xGrabDeviceReply;
  520.  
  521. /*********************************************************
  522.  *
  523.  * UngrabDevice.
  524.  *
  525.  */
  526.  
  527. typedef struct _xUngrabDeviceReq { /* POHC 92/02/14 */
  528.     CARD8    reqType;    /* input extension major code    */
  529.     CARD8     ReqType;        /* always X_UnGrabDevice     */
  530.     CARD16     length B16;
  531.     Time     time B32;
  532.     CARD8     deviceid;
  533.     BYTE    pad1, pad2, pad3;
  534. } xUngrabDeviceReq;
  535.  
  536. /*********************************************************
  537.  *
  538.  * GrabDeviceKey.
  539.  *
  540.  */
  541.  
  542. typedef struct _xGrabDeviceKeyReq { /* POHC 92/02/14 */
  543.     CARD8    reqType;    /* input extension major code    */
  544.     CARD8     ReqType;        /* always X_GrabDeviceKey     */
  545.     CARD16     length B16;
  546.     Window     grabWindow B32;
  547.     CARD16    event_count B16;
  548.     CARD16     modifiers B16;
  549.     CARD8    modifier_device;
  550.     CARD8    grabbed_device;
  551.     CARD8    key;
  552.     BYTE     this_device_mode;  
  553.     BYTE     other_devices_mode;  
  554.     BOOL     ownerEvents;
  555.     BYTE    pad1, pad2;
  556. } xGrabDeviceKeyReq;
  557.  
  558. /*********************************************************
  559.  *
  560.  * UngrabDeviceKey.
  561.  *
  562.  */
  563.  
  564. typedef struct _xUngrabDeviceKeyReq { /* POHC 92/02/14 */
  565.     CARD8    reqType;    /* input extension major code    */
  566.     CARD8     ReqType;        /* always X_UngrabDeviceKey     */
  567.     CARD16     length B16;
  568.     Window     grabWindow B32;
  569.     CARD16    modifiers B16;
  570.     CARD8     modifier_device;
  571.     CARD8    key;
  572.     CARD8    grabbed_device;
  573.     BYTE    pad1, pad2, pad3;
  574. } xUngrabDeviceKeyReq;
  575.  
  576. /*********************************************************
  577.  *
  578.  * GrabDeviceButton.
  579.  *
  580.  */
  581.  
  582. typedef struct _xGrabDeviceButtonReq { /* POHC 92/02/14 */
  583.     CARD8    reqType;    /* input extension major code    */
  584.     CARD8     ReqType;        /* always X_GrabDeviceButton     */
  585.     CARD16     length B16;
  586.     Window     grabWindow B32;
  587.     CARD8    grabbed_device;
  588.     CARD8    modifier_device;
  589.     CARD16     event_count B16;
  590.     CARD16     modifiers B16;
  591.     BYTE     this_device_mode;  
  592.     BYTE     other_devices_mode;  
  593.     CARD8     button;
  594.     BOOL     ownerEvents;
  595.     BYTE    pad1, pad2;
  596. } xGrabDeviceButtonReq;
  597.  
  598. /*********************************************************
  599.  *
  600.  * UngrabDeviceButton.
  601.  *
  602.  */
  603.  
  604. typedef struct _xUngrabDeviceButtonReq { /* POHC 92/02/14 */
  605.     CARD8    reqType;    /* input extension major code    */
  606.     CARD8     ReqType;        /* always X_UngrabDeviceButton     */
  607.     CARD16     length B16;
  608.     Window     grabWindow B32;
  609.     CARD16     modifiers B16;
  610.     CARD8     modifier_device;
  611.     CARD8     button;
  612.     CARD8     grabbed_device;
  613.     BYTE    pad1, pad2, pad3;
  614. } xUngrabDeviceButtonReq;
  615.  
  616. /*********************************************************
  617.  *
  618.  * AllowDeviceEvents.
  619.  *
  620.  */
  621.  
  622. typedef struct _xAllowDeviceEventsReq { /* POHC 92/02/14 */
  623.     CARD8    reqType;    /* input extension major code    */
  624.     CARD8     ReqType;        /* always X_AllowDeviceEvents     */
  625.     CARD16     length B16;
  626.     Time     time B32;
  627.     CARD8    mode;
  628.     CARD8     deviceid;
  629.     BYTE    pad1, pad2;
  630. } xAllowDeviceEventsReq;
  631.  
  632. /*********************************************************
  633.  *
  634.  * GetDeviceFocus.
  635.  *
  636.  */
  637.  
  638. typedef struct _xGetDeviceFocusReq { /* POHC 92/02/14 */
  639.     CARD8     reqType;        /* input extension major code   */
  640.     CARD8     ReqType;        /* always X_GetDeviceFocus     */
  641.     CARD16     length;
  642.     CARD8     deviceid;
  643.     BYTE     pad1, pad2, pad3;
  644. } xGetDeviceFocusReq;
  645.  
  646. typedef struct _xGetDeviceFocusReply { /* POHC 92/02/14 */
  647.     CARD8     repType;      /* X_Reply             */
  648.     CARD8     RepType;        /* always X_GetDeviceFocus      */
  649.     CARD16     sequenceNumber B16;
  650.     CARD32     length B32;
  651.     CARD32     focus B32;
  652.     Time     time B32;
  653.     CARD8      revertTo;
  654.     BYTE     pad1, pad2, pad3;
  655.     CARD32     pad01 B32;
  656.     CARD32     pad02 B32;
  657.     CARD32     pad03 B32;
  658.     } xGetDeviceFocusReply;
  659.  
  660. /*********************************************************
  661.  *
  662.  * SetDeviceFocus.
  663.  *
  664.  */
  665.  
  666. typedef struct _xSetDeviceFocusReq { /* POHC 92/02/14 */
  667.     CARD8     reqType;        /* input extension major code   */
  668.     CARD8     ReqType;        /* always X_SetDeviceFocus     */
  669.     CARD16     length;
  670.     Window     focus B32;
  671.     Time       time B32;
  672.     CARD8      revertTo;
  673.     CARD8      device;
  674.     CARD16     pad01;
  675. } xSetDeviceFocusReq;
  676.  
  677. /*********************************************************
  678.  *
  679.  * GetFeedbackControl.
  680.  *
  681.  */
  682.  
  683. typedef struct _xGetFeedbackControlReq { /* POHC 92/02/14 */
  684.     CARD8    reqType;    /* input extension major code    */
  685.     CARD8     ReqType;        /* X_GetFeedbackControl      */
  686.     CARD16     length B16;
  687.     CARD8     deviceid;
  688.     BYTE    pad1, pad2, pad3;
  689. } xGetFeedbackControlReq;
  690.  
  691. typedef struct _xGetFeedbackControlReply { /* POHC 92/02/14 */
  692.     CARD8      repType;      /* X_Reply             */
  693.     CARD8      RepType;        /* always X_GetFeedbackControl     */
  694.     CARD16     sequenceNumber B16;
  695.     CARD32     length B32;
  696.     CARD16    num_feedbacks;
  697.     CARD16    pad01;
  698.     CARD32    pad02;
  699.     CARD32    pad03;
  700.     CARD32    pad04;
  701.     CARD32    pad05;
  702.     CARD32    pad06;
  703. } xGetFeedbackControlReply;
  704.  
  705. typedef struct _xFeedbackState { /* POHC 92/02/14 */
  706.     CARD8      class;         /* feedback class        */
  707.     CARD8      length;     /* feedback id          */
  708. } xFeedbackState;
  709.  
  710. typedef struct _xKbdFeedbackState { /* POHC 92/02/14 */
  711.     CARD8   class;
  712.     CARD8   length;
  713.     CARD8   click;
  714.     CARD8   percent;
  715.     CARD16  pitch;
  716.     CARD16  duration;
  717.     CARD32  led_mask;
  718.     CARD32  led_values;
  719.     BOOL    global_auto_repeat;
  720.     BYTE    pad1, pad2, pad3;
  721.     BYTE    auto_repeats[32];
  722. } xKbdFeedbackState;
  723.  
  724. typedef struct _xPtrFeedbackState { /* POHC 92/02/14 */
  725.     CARD8   class;
  726.     CARD8   length;
  727.     CARD16  accelNum;
  728.     CARD16  accelDenom;
  729.     CARD16  threshold;
  730. } xPtrFeedbackState;
  731.  
  732. typedef struct _xIntegerFeedbackState { /* POHC 92/02/14 */
  733.     CARD8      class;      /* feedback class id        */
  734.     CARD8      length;     /* feedback length          */
  735.     BYTE    pad1, pad2;
  736.     CARD32    resolution;
  737.     CARD32    min_value;
  738.     CARD32    max_value;
  739. } xIntegerFeedbackState;
  740.  
  741. typedef struct _xStringFeedbackState { /* POHC 92/02/14 */
  742.     CARD8      class;      /* feedback class id        */
  743.     CARD8      length;     /* feedback length          */
  744.     CARD16    max_symbols;
  745.     CARD16    num_syms_supported;
  746.     BYTE    pad1, pad2;
  747. } xStringFeedbackState;
  748.  
  749. typedef struct _xBellFeedbackState { /* POHC 92/02/14 */
  750.     CARD8      class;      /* feedback class id        */
  751.     CARD8      length;     /* feedback length          */
  752.     CARD8    percent;
  753.     BYTE    pad1;
  754.     CARD16    pitch;
  755.     CARD16    duration;
  756. } xBellFeedbackState;
  757.  
  758. typedef struct _xLedFeedbackState { /* POHC 92/02/14 */
  759.     CARD8      class;      /* feedback class id        */
  760.     CARD8      length;     /* feedback length          */
  761.     BYTE    pad1, pad2;
  762.     CARD32    led_mask;
  763.     CARD32    led_values;
  764. } xLedFeedbackState;
  765.  
  766. /*********************************************************
  767.  *
  768.  * ChangeFeedbackControl.
  769.  *
  770.  */
  771.  
  772. typedef struct _xChangeFeedbackControlReq { /* POHC 92/02/14 */
  773.     CARD8    reqType;    /* input extension major code    */
  774.     CARD8     ReqType;        /* X_ChangeFeedbackControl      */
  775.     CARD16     length B16;
  776.     CARD32    mask;
  777.     CARD8      deviceid;
  778.     CARD8      feedbackid;
  779.     BYTE    pad1, pad2;
  780. } xChangeFeedbackControlReq;
  781.  
  782. typedef struct _xFeedbackCtl { /* POHC 92/02/14 */
  783.     CARD8      class;      /* feedback class id        */
  784.     CARD8      length;     /* feedback length          */
  785. } xFeedbackCtl;
  786.  
  787. typedef struct _xKbdFeedbackCtl { /* POHC 92/02/14 */
  788.     CARD8      class;      /* feedback class id        */
  789.     CARD8      length;     /* feedback length          */
  790.     KeyCode     key; 
  791.     CARD8    auto_repeat_mode;
  792.     CARD8    click;
  793.     CARD8    percent;
  794.     CARD16    pitch;
  795.     CARD16    duration;
  796.     CARD16    pad;
  797.     CARD32    led_mask;
  798.     CARD32    led_values;
  799. } xKbdFeedbackCtl;
  800.  
  801. typedef struct _xPtrFeedbackCtl { /* POHC 92/02/14 */
  802.     CARD8      class;      /* feedback class id        */
  803.     CARD8      length;     /* feedback length          */
  804.     CARD16    num;
  805.     CARD16    denom;
  806.     CARD16    thresh;
  807. } xPtrFeedbackCtl;
  808.  
  809. typedef struct _xIntegerFeedbackCtl { /* POHC 92/02/14 */
  810.     CARD8      class;      /* feedback class id        */
  811.     CARD8      length;     /* feedback length          */
  812.     BYTE    pad1, pad2;
  813.     CARD32    int_to_display;
  814. } xIntegerFeedbackCtl;
  815.  
  816. typedef struct _xStringFeedbackCtl { /* POHC 92/02/14 */
  817.     CARD8      class;      /* feedback class id        */
  818.     CARD8      length;     /* feedback length          */
  819.     CARD16    num_keysyms;
  820. } xStringFeedbackCtl;
  821.  
  822. typedef struct _xBellFeedbackCtl { /* POHC 92/02/14 */
  823.     CARD8      class;      /* feedback class id        */
  824.     CARD8      length;     /* feedback length          */
  825.     CARD8    percent;
  826.     BYTE    pad1;
  827.     CARD16    pitch;
  828.     CARD16    duration;
  829. } xBellFeedbackCtl;
  830.  
  831. typedef struct _xLedFeedbackCtl { /* POHC 92/02/14 */
  832.     CARD8      class;      /* feedback class id        */
  833.     CARD8      length;     /* feedback length          */
  834.     BYTE    pad1, pad2;
  835.     CARD32    led_mask;
  836.     CARD32    led_values;
  837. } xLedFeedbackCtl;
  838.  
  839. /*********************************************************
  840.  *
  841.  * GetDeviceKeyMapping.
  842.  *
  843.  */
  844.  
  845. typedef struct _xGetDeviceKeyMappingReq { /* POHC 92/02/14 */
  846.     CARD8     reqType;        /* input extension major code   */
  847.     CARD8     ReqType;         /* always X_GetDeviceKeyMapping */
  848.     CARD16     length B16;
  849.     CARD8       deviceid;
  850.     KeyCode     firstKeyCode; 
  851.     CARD8     count;
  852.     BYTE    pad1;
  853. } xGetDeviceKeyMappingReq;
  854.  
  855. typedef struct _xGetDeviceKeyMappingReply { /* POHC 92/02/14 */
  856.     CARD8      repType;      /* X_Reply             */
  857.     CARD8      RepType;           /* always X_GetDeviceKeyMapping */
  858.     CARD16     sequenceNumber B16;
  859.     CARD32     length B32;
  860.     CARD8      keySymsPerKeyCode;
  861.     CARD8      pad0;
  862.     CARD16     pad1 B16;
  863.     CARD32     pad2 B32;
  864.     CARD32     pad3 B32;
  865.     CARD32     pad4 B32;
  866.     CARD32     pad5 B32;
  867.     CARD32     pad6 B32;
  868. } xGetDeviceKeyMappingReply;
  869.  
  870. /*********************************************************
  871.  *
  872.  * ChangeDeviceKeyMapping.
  873.  *
  874.  */
  875.  
  876. typedef struct _xChangeDeviceKeyMappingReq { /* POHC 92/02/14 */
  877.     CARD8     reqType;        /* input extension major code   */
  878.     CARD8     ReqType;        /* always X_ChangeDeviceKeyMapping */
  879.     CARD16     length B16;
  880.     CARD8       deviceid;
  881.     KeyCode     firstKeyCode;
  882.     CARD8     keySymsPerKeyCode;
  883.     CARD8     keyCodes;
  884. } xChangeDeviceKeyMappingReq;
  885.  
  886. /*********************************************************
  887.  *
  888.  * GetDeviceModifierMapping.
  889.  *
  890.  */
  891.  
  892. typedef struct _xGetDeviceModifierMappingReq { /* POHC 92/02/14 */
  893.     CARD8     reqType;        /* input extension major code   */
  894.     CARD8     ReqType;        /* always X_GetDeviceModifierMapping */
  895.     CARD16     length B16;
  896.     CARD8       deviceid;
  897.     BYTE    pad1, pad2, pad3;
  898. } xGetDeviceModifierMappingReq;
  899.  
  900. typedef struct _xGetDeviceModifierMappingReply { /* POHC 92/02/14 */
  901.     CARD8      repType;      /* X_Reply */
  902.     CARD8      RepType;        /* always X_GetDeviceModifierMapping */
  903.     CARD16     sequenceNumber B16;
  904.     CARD32     length B32;
  905.     CARD8      numKeyPerModifier;
  906.     CARD8      pad0;
  907.     CARD16     pad1 B16;
  908.     CARD32     pad2 B32;
  909.     CARD32     pad3 B32;
  910.     CARD32     pad4 B32;
  911.     CARD32     pad5 B32;
  912.     CARD32     pad6 B32;
  913. } xGetDeviceModifierMappingReply;
  914.  
  915. /*********************************************************
  916.  *
  917.  * SetDeviceModifierMapping.
  918.  *
  919.  */
  920.  
  921. typedef struct _xSetDeviceModifierMappingReq { /* POHC 92/02/14 */
  922.     CARD8     reqType;        /* input extension major code   */
  923.     CARD8     ReqType;        /* always X_SetDeviceModifierMapping */
  924.     CARD16     length B16;
  925.     CARD8       deviceid;
  926.     CARD8       numKeyPerModifier;
  927.     CARD16      pad1 B16;
  928. } xSetDeviceModifierMappingReq;
  929.  
  930. typedef struct _xSetDeviceModifierMappingReply { /* POHC 92/02/14 */
  931.     CARD8      repType;      /* X_Reply */
  932.     CARD8      RepType;        /* always X_SetDeviceModifierMapping */
  933.     CARD16     sequenceNumber B16;
  934.     CARD32     length B32;
  935.     CARD8      success;
  936.     CARD8      pad0;
  937.     CARD16     pad1 B16;
  938.     CARD32     pad2 B32;
  939.     CARD32     pad3 B32;
  940.     CARD32     pad4 B32;
  941.     CARD32     pad5 B32;
  942.     CARD32     pad6 B32;
  943. } xSetDeviceModifierMappingReply;
  944.  
  945. /*********************************************************
  946.  *
  947.  * GetDeviceButtonMapping.
  948.  *
  949.  */
  950.  
  951. typedef struct _xGetDeviceButtonMappingReq { /* POHC 92/02/14 */
  952.     CARD8    reqType;    /* input extension major code    */
  953.     CARD8     ReqType;        /* X_GetDeviceButtonMapping     */
  954.     CARD16     length B16;
  955.     CARD8       deviceid;
  956.     BYTE    pad1, pad2, pad3;
  957. } xGetDeviceButtonMappingReq;
  958.  
  959. typedef struct _xGetDeviceButtonMappingReply { /* POHC 92/02/14 */
  960.     CARD8      repType;      /* X_Reply */
  961.     CARD8      RepType;        /* always X_GetDeviceButtonMapping */
  962.     CARD16     sequenceNumber B16;
  963.     CARD32     length B32;
  964.     CARD8     nElts;
  965.     BYTE    pad1, pad2, pad3;
  966.     CARD32     pad01 B32;
  967.     CARD32     pad02 B32;
  968.     CARD32     pad03 B32;
  969.     CARD32     pad04 B32;
  970.     CARD32     pad05 B32;
  971. } xGetDeviceButtonMappingReply;
  972.  
  973. /*********************************************************
  974.  *
  975.  * SetDeviceButtonMapping.
  976.  *
  977.  */
  978.  
  979. typedef struct _xSetDeviceButtonMappingReq { /* POHC 92/02/14 */
  980.     CARD8    reqType;    /* input extension major code    */
  981.     CARD8     ReqType;        /* X_SetDeviceButtonMapping     */
  982.     CARD16     length B16;
  983.     CARD8       deviceid;
  984.     CARD8       map_length;
  985.     BYTE    pad1, pad2;
  986. } xSetDeviceButtonMappingReq;
  987.  
  988. typedef struct _xSetDeviceButtonMappingReply { /* POHC 92/02/14 */
  989.     CARD8      repType;          /* X_Reply */
  990.     CARD8      RepType;            /* always X_SetDeviceButtonMapping */
  991.     CARD16     sequenceNumber B16;
  992.     CARD32     length B32;
  993.     CARD8     status;
  994.     BYTE     pad0;
  995.     CARD16     pad1 B16;
  996.     CARD32     pad2 B32;
  997.     CARD32     pad3 B32;
  998.     CARD32     pad4 B32;
  999.     CARD32     pad5 B32;
  1000.     CARD32     pad6 B32;
  1001. } xSetDeviceButtonMappingReply;
  1002.  
  1003. /*********************************************************
  1004.  *
  1005.  * QueryDeviceState.
  1006.  *
  1007.  */
  1008.  
  1009. typedef struct _xQueryDeviceStateReq { /* POHC 92/02/14 */
  1010.     CARD8    reqType;
  1011.     CARD8     ReqType;        /* always X_QueryDeviceState */
  1012.     CARD16     length B16;
  1013.     CARD8       deviceid;
  1014.     BYTE    pad1, pad2, pad3;
  1015. } xQueryDeviceStateReq;
  1016.  
  1017. typedef struct _xQueryDeviceStateReply { /* POHC 92/02/14 */
  1018.     CARD8      repType;          /* X_Reply */
  1019.     CARD8      RepType;            /* always X_QueryDeviceState    */
  1020.     CARD16     sequenceNumber B16;
  1021.     CARD32     length B32;
  1022.     CARD8     num_classes;
  1023.     BYTE     pad0;
  1024.     CARD16     pad1 B16;
  1025.     CARD32     pad2 B32;
  1026.     CARD32     pad3 B32;
  1027.     CARD32     pad4 B32;
  1028.     CARD32     pad5 B32;
  1029.     CARD32     pad6 B32;
  1030. } xQueryDeviceStateReply;
  1031.  
  1032. typedef struct _xKeyState { /* POHC 92/02/14 */
  1033.     CARD8      class;
  1034.     CARD8      length;
  1035.     CARD8    num_keys;
  1036.     BYTE       pad1;
  1037.     CARD8      keys[32];
  1038. } xKeyState;
  1039.  
  1040. typedef struct _xButtonState { /* POHC 92/02/14 */
  1041.     CARD8      class;
  1042.     CARD8      length;
  1043.     CARD8    num_buttons;
  1044.     BYTE       pad1;
  1045.     CARD8      buttons[32];
  1046. } xButtonState;
  1047.  
  1048. typedef struct _xValuatorState { /* POHC 92/02/14 */
  1049.     CARD8      class;
  1050.     CARD8      length;
  1051.     CARD8      num_valuators;
  1052.     CARD8    mode;
  1053. } xValuatorState;
  1054.  
  1055. /*********************************************************
  1056.  *
  1057.  * SendExtensionEvent.
  1058.  * THIS REQUEST MUST BE KEPT A MULTIPLE OF 8 BYTES IN LENGTH!
  1059.  * MORE EVENTS MAY FOLLOW AND THEY MUST BE QUAD-ALIGNED!
  1060.  *
  1061.  */
  1062.  
  1063. typedef struct _xSendExtensionEventReq { /* POHC 92/02/14 */
  1064.     CARD8    reqType;
  1065.     CARD8     ReqType;        /* always X_SendExtensionEvent */
  1066.     CARD16     length B16;
  1067.     Window    destination B32;
  1068.     CARD8       deviceid;
  1069.     BOOL       propagate;
  1070.     CARD16    count;
  1071.     CARD8    num_events;
  1072.     BYTE    pad1,pad2,pad3;
  1073. } xSendExtensionEventReq;
  1074.  
  1075. /**********************************************************
  1076.  *
  1077.  * Input extension events.
  1078.  *
  1079.  * DeviceValuator
  1080.  *
  1081.  */
  1082.  
  1083. typedef struct
  1084.     _deviceValuator { /* POHC 92/02/14 */
  1085.     BYTE     type;
  1086.     CARD8       deviceid;
  1087.     CARD16     sequenceNumber B16;
  1088.     KeyButMask  device_state B16;
  1089.     CARD8    num_valuators;
  1090.     CARD8       first_valuator;
  1091.     CARD32     valuators[6] B32;
  1092.     }  deviceValuator;
  1093.  
  1094. /**********************************************************
  1095.  *
  1096.  * DeviceKeyButtonPointer.
  1097.  *
  1098.  * Used for: DeviceKeyPress, DeviceKeyRelease,
  1099.  *         DeviceButtonPress, DeviceButtonRelease,
  1100.  *         ProximityIn, ProximityOut
  1101.  *         DeviceMotionNotify,
  1102.  * 
  1103.  */
  1104.  
  1105. typedef struct
  1106.     _deviceKeyButtonPointer { /* POHC 92/02/14 */
  1107.     BYTE     type;
  1108.     BYTE        detail;
  1109.     CARD16     sequenceNumber B16;
  1110.     Time        time B32;
  1111.     Window      root B32;
  1112.     Window      event B32;
  1113.     Window      child B32;
  1114.     INT16       root_x B16;
  1115.     INT16       root_y B16;
  1116.     INT16       event_x B16;
  1117.     INT16       event_y B16;
  1118.     KeyButMask  state B16;
  1119.     BOOL        same_screen;
  1120.     CARD8       deviceid;
  1121.     }  deviceKeyButtonPointer;
  1122.  
  1123. /**********************************************************
  1124.  *
  1125.  * DeviceFocus.
  1126.  *
  1127.  */
  1128.  
  1129. typedef struct
  1130.     _deviceFocus { /* POHC 92/02/14 */
  1131.     BYTE     type;
  1132.     BYTE        detail;
  1133.     CARD16     sequenceNumber B16;
  1134.     Time        time B32;
  1135.     Window      window B32;
  1136.     BYTE    mode;
  1137.     CARD8       deviceid;
  1138.     BYTE    pad1, pad2;
  1139.     CARD32    pad00 B32;
  1140.     CARD32    pad01 B32;
  1141.     CARD32    pad02 B32;
  1142.     CARD32    pad03 B32;
  1143.     }  deviceFocus;
  1144.  
  1145. /**********************************************************
  1146.  *
  1147.  * DeviceStateNotify.
  1148.  *
  1149.  */
  1150.  
  1151. typedef struct
  1152.     _deviceStateNotify { /* POHC 92/02/14 */
  1153.     BYTE     type;
  1154.     BYTE        deviceid;
  1155.     CARD16     sequenceNumber B16;
  1156.     Time        time B32;
  1157.     Mask        classes_reported B32;
  1158.     CARD8       buttons[4];
  1159.     CARD8       keys[4];
  1160.     CARD32    valuators[3];
  1161.     }  deviceStateNotify;
  1162.  
  1163. /**********************************************************
  1164.  *
  1165.  * DeviceKeyStateNotify.
  1166.  *
  1167.  */
  1168.  
  1169. typedef struct
  1170.     _deviceKeyStateNotify { /* POHC 92/02/14 */
  1171.     BYTE     type;
  1172.     BYTE        deviceid;
  1173.     CARD16     sequenceNumber B16;
  1174.     CARD8       keys[28];
  1175.     }  deviceKeyStateNotify;
  1176.  
  1177. /**********************************************************
  1178.  *
  1179.  * DeviceButtonStateNotify.
  1180.  *
  1181.  */
  1182.  
  1183. typedef struct
  1184.     _deviceButtonStateNotify { /* POHC 92/02/14 */
  1185.     BYTE     type;
  1186.     BYTE        deviceid;
  1187.     CARD16     sequenceNumber B16;
  1188.     CARD8       buttons[28];
  1189.     }  deviceButtonStateNotify;
  1190.  
  1191. /**********************************************************
  1192.  *
  1193.  * DeviceMappingNotify.
  1194.  * Fields must be kept in sync with core mappingnotify event.
  1195.  *
  1196.  */
  1197.  
  1198. typedef struct
  1199.     _deviceMappingNotify { /* POHC 92/02/14 */
  1200.     BYTE     type;
  1201.     BYTE        deviceid;
  1202.     CARD16     sequenceNumber B16;
  1203.     CARD8       request;
  1204.     KeyCode     firstKeyCode;
  1205.     CARD8       count;
  1206.     BYTE        pad1;
  1207.     Time        time B32;
  1208.     CARD32    pad00 B32;
  1209.     CARD32    pad01 B32;
  1210.     CARD32    pad02 B32;
  1211.     CARD32    pad03 B32;
  1212.     CARD32    pad04 B32;
  1213.     }  deviceMappingNotify;
  1214.  
  1215. /**********************************************************
  1216.  *
  1217.  * ChangeDeviceNotify.
  1218.  *
  1219.  */
  1220.  
  1221. typedef struct
  1222.     _changeDeviceNotify { /* POHC 92/02/14 */
  1223.     BYTE     type;
  1224.     BYTE        deviceid;
  1225.     CARD16     sequenceNumber B16;
  1226.     Time        time B32;
  1227.     CARD8       request;
  1228.     BYTE        pad1, pad2, pad3;
  1229.     CARD32    pad00 B32;
  1230.     CARD32    pad01 B32;
  1231.     CARD32    pad02 B32;
  1232.     CARD32    pad03 B32;
  1233.     CARD32    pad04 B32;
  1234.     }  changeDeviceNotify;
  1235.  
  1236. #endif
  1237.